package cn.com.bluemoon.daps.model.core.file.parser;

import cn.com.bluemoon.daps.common.domain.ResultBean;
import cn.com.bluemoon.daps.common.exception.DapException;
import cn.com.bluemoon.daps.model.core.file.TableInfoDto;
import cn.com.bluemoon.daps.model.core.file.config.GlobalParserConfig;
import com.alibaba.druid.DbType;

import java.io.File;
import java.util.List;

/**
 * 解析器（目前暂时用工厂+策略）
 *
 * @author Jarod.Kong
 * @date 2021/3/11 13:56
 */
public class FileParserFactory {

    public static ResultBean<List<TableInfoDto>> parser(File file, FileType fileType, DbType dbType) {
        AbstractFileParser fileParser = null;
        if (FileType.EXCEL.equals(fileType)) {
            fileParser = new ExcelFileParser();
        } else if (FileType.SQL.equals(fileType)) {
            fileParser = new SqlFileParser();
        }
        if (fileParser == null) {
            throw new DapException("暂不支持该文件类型解析");
        }
        GlobalParserConfig globalParserConfig = new GlobalParserConfig();
        globalParserConfig.setDbType(dbType);
        fileParser.setGlobalParserConfig(globalParserConfig);
        return fileParser.parser(file);
    }

    public static ResultBean<List<TableInfoDto>> parser(File file, FileType fileType) {
        return parser(file, fileType, DbType.mysql);
    }


}
